1. Technical Field
This disclosure generally relates to computer systems, and more specifically relates to direct memory access (DMA) in computer systems.
2. Background Art
Computer systems typically use direct memory access (DMA) to move data between I/O devices and memory. Because the data may be moved without the processor moving the data, this frees up the processor for other tasks. DMA thus boosts system performance.
The combination of hardware and software on a particular computer system defines a computing environment. Different hardware platforms and different operating systems thus provide different computing environments. In recent years, engineers have recognized that it is possible to provide different computing environments on the same physical computer system by logically partitioning the computer system resources to different computing environments. The IBM POWER Based Server computer system developed by IBM is an example of a computer system that supports logical partitioning. If logical partitioning on a IBM POWER Based Server computer system is desired, partition manager code (referred to as a “hypervisor” in IBM terminology) is installed that allows defining different computing environments (known as logical partitions) on the same platform. Once the partition manager is installed, logical partitions may be created that define different computing environments. The partition manager manages the logical partitions to assure that they can share needed resources in the computer system while maintaining the separate computing environments defined by the logical partitions.
In a logically partitioned computer system, I/O adapters may be virtualized to support the I/O operations needed in the various logical partitions. An address translation table is created to enable the hardware I/O adapter to perform DMA I/O operations to the memory of individual logical partitions. A DMA window is a defined region of I/O address space that correlates through address translation tables to regions of host system memory. The DMA window is what an I/O adapter and its corresponding device driver see as a continuous region of I/O address space that it can read from and write to during DMA operations.
Known methods of DMA address translation can result in inefficient DMA accesses. For example, when a system has a page size of 4K, but 256 MB need to be moved in a DMA transfer, this requires 64K accesses to an address translation table to perform the transfer.